package com.atguigu.paymentdemo.task;


import com.atguigu.paymentdemo.entity.OrderInfo;
import com.atguigu.paymentdemo.service.OrderInfoService;
import com.atguigu.paymentdemo.service.WxPayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.*;

@Slf4j
@Component
public class WxPayTask {

    @Resource
    private OrderInfoService orderInfoService;

    @Resource
    private WxPayService wxPayService;


    /**
     * 秒 分 时 日 周
     *
     * 日和周不能同时执行，执行其中一个，另外一个则设置为?
     */
//    @Scheduled(cron = "* * * * * ?")
//    public void task1() {
//        log.info("test1被执行...");
//    }

    /**
     * 没30秒执行一次，查询创建超过5分钟，并且没有支付的订单
     */
    @Scheduled(cron = "0/30 * * * * ?")
    public void orderConfirm() throws Exception {
        log.info("orderConfirm被执行...");

        List<OrderInfo> orderInfoList = orderInfoService.getNoPayOrderByDuration(1);
        for (OrderInfo orderInfo : orderInfoList) {
            String orderNo = orderInfo.getOrderNo();
            log.warn("超时订单 ===> {}", orderNo);

            // 核实订单状态， 调用微信支付查询订单接口(害怕支付了钱，消息没有通知到)
            wxPayService.checkOrderStatus(orderNo);
        }
    }
}
